package top.codecrab.cyclicBarrier;

import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;

import static java.lang.String.valueOf;

/**
 * @author codecrab
 * @since 2021年06月30日 19:04
 */
public class CyclicBarrierDemo {
    public static void main(String[] args) {
        CyclicBarrier cyclicBarrier = new CyclicBarrier(
                7, () -> System.out.println("召唤神龙")
        );

        for (int i = 1; i <= 7; i++) {
            new Thread(() -> {
                try {
                    System.out.println("第" + Thread.currentThread().getName() + "颗龙珠");
                    //未到设定的parties，就继续下次个线程，直到parties数值达到，就执行CyclicBarrier构造函数的第二个参数的线程
                    cyclicBarrier.await();
                } catch (InterruptedException | BrokenBarrierException e) {
                    e.printStackTrace();
                }
            }, valueOf(i)).start();
        }
    }
}
